package org.grottarossa.tms.aeroflow.ui.core.viewmanager;

import java.util.EventListener;

import com.vaadin.ui.Component;

/**
 * <p>Listener di eventi relativi ad un {@link IViewManager}.</p>
 *
 * <p>Le implementazioni di questa interfaccia possono avvalersi della classe base {@link ViewManagerAdapter}.</p>
 * @see ViewManagerAdapter
 *
 * @author 
 */
public interface IViewManagerListener extends EventListener
{
	/**
	 * Chiamato prima che una certa view venga visualizzata a causa di un {@link IViewManager#enterView(Component)}
	 * @param view la view che sta per essere visualizzata
	 */
	void entering(Component view);

	/**
	 * Chiamato prima che una certa view venga chiusa/nascosta
	 * @param view la view che sta per essere chiusa/nascosta.
	 */
	void exiting(Component view);

	/**
	 * Chiamato prima che una certa view venga visualizzata a causa di un {@link IViewManager#enterView(Component)}
	 * o rivisualizzata a causa della chiusura/nascondimento di un'altra view
	 *
	 * @param view la view che sta per essere visualizzata/rivisualizzata
	 */
	void showing(Component view);

}
